#define DEBUG
#include <cstdio>
#include <cstring>

using namespace std;

long long calc(long long n) {
  static long long f[19][10][10][2];
  if (n<0) {
    return 0;
  }
  memset(f, 0, sizeof(f));
  int a[19];
  a[0]=0;
  for (long long i=1; i<=n; i*=10) {
    a[++a[0]] = n/i%10;
  }

  if (a[0]<2) {
    return n+1;
  }

  for (int i=0; i<10; i++) {
    for (int j=0; j<10; j++) {
      if (i!=j) {
	f[2][i][j][0]=1;
      }
    }
  }
  f[2][a[2]][a[1]][1]=1;

  for (int i=3; i<=a[0]; i++) {
    for (int j=0; j<10; j++) {
      for (int k=0; k<10; k++) {
	if (j!=k) {
	  for (int x=0; x<10; x++) {
	    if (j!=x && x!=k) {
	      f[i][j][k][0] += f[i-1][k][x][0];
	    }
	  }
	}
      }
    }
    if (a[i]!=a[i-1]) {
      for (int k=0; k<a[i-2]; k++) {
	if (a[i]!=k && a[i-1]!=k) {
	  f[i][a[i]][a[i-1]][1] += f[i-1][a[i-1]][k][0];
	}
      }
      if (a[i]!=a[i-2] && a[i-1]!=a[i-2]) {
	f[i][a[i]][a[i-1]][1] += f[i-1][a[i-1]][a[i-2]][1];
      }
    }
  }

  long long ret=10;
  for (int i=2; i<a[0]; i++) {
    for (int j=1; j<10; j++) {
      for (int k=0; k<10; k++) {
	if (j!=k) {
	  ret += f[i][j][k][0];
	}
      }
    }
  }
  for (int i=1; i<a[a[0]]; i++) {
    for (int j=0; j<10; j++) {
      if (i!=j) {
	ret += f[a[0]][i][j][0];
      }
    }
  }
  for (int i=0; i<a[a[0]-1]; i++) {
    if (a[a[0]]!=i) {
      ret += f[a[0]][a[a[0]]][i][0];
    }
  }
  if (a[a[0]]!=a[a[0]-1]) {
    ret += f[a[0]][a[a[0]]][a[a[0]-1]][1];
  }
  return ret;
}

int main() {
#ifdef DEBUG
  freopen("3316.in", "r", stdin);
  freopen("3316.out", "w", stdout);
#endif

  long long a, b;
  scanf("%lld %lld", &a, &b);
  printf("%lld", calc(b)-calc(a-1));

  fclose(stdin);
  fclose(stdout);
  return 0;
}
